查看原文
其他

Google Play开发者账户被封,如何快速再上架?

Android独立开发 Android出海
2024-11-23

关注公众号,经常更新Android出海经验,微信添加“dev_oy”一起加GP交流群讨论出海技巧。

之前介绍过,常见Google开发者账户被封号原因,本篇就从Google Play开发者账户被封后,项目再研发方面实现如何快速再上架?

Google开发者又又又被封号?

Android独立开发,公众号:Android出海Google开发者又又又被封号?为什么!!!
本篇不保证再上架百分之百成功,但至少在我们内部,此操作是可以成功再上架,并且保持超一年还在线的。
下面从不同维度,聊聊具体的步骤措施。

1. 项目创建

建议通过AS新创建一个项目的方式来,如果是直接copy之前封号的项目,则原来项目是有关联可能的。

2. 文件创建

关于文件能否复制,其建议是不要直接copy文件,而是通过新建文件的方式,再粘贴内容,稍微加点空格啥的,这样文件的MD5才会不是同一个。

3. 项目架构

如果能够对项目架构进行重构,涉及改动的代码就会非常多,这样代码关联性可行性更小。

比如之前用MVC,你就改为MVP、MVVM、MVI架构。

4. 三方库

如果某个包用了某某功能的三方库,比如权限请求,那你也可以尝试在新包使用另外的权限三方库。

比如GitHub - guolindev/PermissionX换成GitHub - getActivity/XXPermissions权限请求框架

5. Java or Kotlin

比如之前使用Java开发的,可以考虑全部或者部分转为kotlin代码,也可以尝试Java和Kotlin 代码并存的方式,尤其是不会被混淆的实体类可以考虑此玩法。

6. 混合开发

使用常规的纯原生开发,也可以考虑尝试混合开发。

比如简单的和 WebView 里面的 H5 进行配合(Google Play对H5和原生的比例 貌似没有啥规定)。

亦或者使用 Flutter、RN 的方式,部分代码放置在原生,也可以尝试使用Compose进行开发。

7. 内部SDK

一般公司内部所有的app,都使用的是一些内部公共SDK,只要在遇到过封号问题,就不要使用这种方式了。

即使是放到jitpack,jcenter上也有一定风险。

8. App Name

取一个跟之前不一样的就行,建议拿到名字上相关网站搜一下,同名是否多,尤其是有存在且对方已做商标保护的,那就更加不要同名了。

可参考:

apkcombo.com/zh/

9. 包名

同样,取一个跟之前不一样的,比如公司名称简称sl,建议包名中就不要有sl了,eg:com.sl.appname此类操作更不建议。

有些小伙伴取出来的包名,真的一看就是同样的一家公司的。

10. Logo

设计一个新的即可,主题色可以适当改下。

11. 签名

重新生成一个新jks文件、密码和名称都变更下,与之前的不要有任何相似。

比如公司名称简称sl,建议jks中就不要有sl了。

12. 域名

买一个新的域名使用,一个app一个单独域名,域名的雷同也是有点小讲究。

比如api.appName1.go、api.appName2.go,这种还是比较明显。

13. 项目结构目录

调整下结构目录,比如名称、嵌套顺序等。

14. 文件名

修改所有的类名、布局文件名、资源文件名。

15. 依赖Module

相应依赖的module也做包名、项目结构目录、文件名调整。

16. UI

尤其是启动页、首页、尽量重新设计,主题色最好与之前有较大变化。

如果有时间,UI全套改下,最为稳妥。

17. 图标

图标的文件名必须全部修改,单纯修改文件名,一个文件的md5其实不会变,需要修改文件的内容。

还可以对图片进行压缩、格式转换,比如png convert to webp或者webp convert to png。

18. 布局文件的控件id

比如之前是btn_login,调整为btn_submit、buttonSubmit等。

19. 布局文件的控件类型

比如之前是LinearLayout,调整为androidx.appcompat.widget.LinearLayoutCompat。

比如之前是TextView,调整为androidx.appcompat.widget.AppCompatTextView。

20. strings.xml

比如之前是

<string name="log_pwd">Password</string

调整为

<string name="log_title_pwd">Password</string>

21. 代码混淆

可参考1:

AndroidProguadRules

https://github.com/king-ma1993/AndroidProguadRules


建议对bt-proguard.txt内容进行相应替换,每个app保证混淆的内容不一样即可,Android超级变态的混淆词典,常规abcd等混淆方式对逆向的干扰程序并不是很大,所以需要一个变态的字典,使用方法如下:

在proguard-rules.pro文件中进行配置

-obfuscationdictionary bt-proguard.txt-classobfuscationdictionary bt-proguard.txt-packageobfuscationdictionary bt-proguard.txt

可参考2:

https://github.com/bytedance/AabResGuard/blob/develop/wiki/zh-cn/README.md

AabResGuard

对aab包的资源就行加密等处理。

22. ARouter

如果使用了ARouter 路由框架,建议做相应修改。

比如之前路由表

const val HOME: String = "/app/home"

调整为

const val INDEX: String = "/newapp/index"

23. 接口映射

比如之前登录接口是

@POST("sl/app/login")suspend fun login(@Body params: HashMap<String, String>): NetResult<LoginResultEntity>

调整为

@POST("ax/FEW/MQx")suspend fun loginInter(@Body params: HashMap<String, String>): BaseResult<LoginEntity>

可以看到有几个变化:

1、接口请求的具体地址变了。

2、请求返回的NetResult变了。

3、请求返回的实体名称也变了。

4、接口请求的方法名也变了。

24. 未混淆的类(实体类等)

比如之前是

data class LoginResultEntity( val token: String? = "", val avatar: String? = "")

调整为

1、名称变更

2、增加垃圾字段

data class LoginEntity( val a="", val b="", val token: String? = "", val avatar: String? = "", val c="")


25. 垃圾代码

加点垃圾代码。

可参考:

AndroidJunkCode

https://github.com/qq549631030/AndroidJunkCode

唯一注意的是,混淆对相应垃圾代码保持不被混淆。

26. 变量、方法名

大部分的变量和方法在混淆都是被重命名的,尤其注意的是打包的aab文件中,没有被重名的,进行相应修改。

这些结果可通过工具jadx-gui进行查看。

27. 三方库

相关三方库升级、或者用其他相关库替换。

28. 三方SDK key

关于使用的一些三方SDK。

比如AppsFlyer,新建一个App会有一个dev key,AppsFlyer默认每个app 的 dev key都是一样的,可联系对应商户更改。

29. XmlClassGuard

混淆xml文件用到的类。

可参考:

XmlClassGuard

https://github.com/liujingxing/XmlClassGuard

以上就是实战快速再上架,作用很大的改进措施,想了解更多关于谷歌上架的知识,关注我们!

继续滑动看下一个
Android出海
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存